package org.eiahe.hr.salary.service;

import org.ehe.common.mybatis.core.page.PageQuery;
import org.ehe.common.mybatis.core.page.TableDataInfo;
import org.eiahe.hr.salary.domain.bo.SalaryAdjustmentApplicationBo;
import org.eiahe.hr.salary.domain.vo.SalaryAdjustmentApplicationVo;

import java.util.Collection;
import java.util.List;

/**
 * 调薪申请Service接口
 *
 * @author zhangnn
 */
public interface ISalaryAdjustmentApplicationService {

    /**
     * 查询调薪申请
     *
     * @param applicationId 调薪申请ID
     * @return 调薪申请
     */
    SalaryAdjustmentApplicationVo queryById(Long applicationId);

    /**
     * 查询调薪申请列表
     *
     * @param bo 调薪申请业务对象
     * @return 调薪申请集合
     */
    List<SalaryAdjustmentApplicationVo> queryList(SalaryAdjustmentApplicationBo bo);

    /**
     * 分页查询调薪申请列表
     *
     * @param bo        调薪申请业务对象
     * @param pageQuery 分页参数
     * @return 调薪申请分页数据
     */
    TableDataInfo<SalaryAdjustmentApplicationVo> queryPageList(SalaryAdjustmentApplicationBo bo, PageQuery pageQuery);

    /**
     * 新增调薪申请
     *
     * @param bo 调薪申请业务对象
     * @return 是否成功
     */
    Boolean insertByBo(SalaryAdjustmentApplicationBo bo);

    /**
     * 修改调薪申请
     *
     * @param bo 调薪申请业务对象
     * @return 是否成功
     */
    Boolean updateByBo(SalaryAdjustmentApplicationBo bo);

    /**
     * 批量删除调薪申请
     *
     * @param ids 调薪申请ID数组
     * @return 是否成功
     */
    Boolean deleteWithValidByIds(Collection<Long> ids);

    /**
     * 审批调薪申请
     *
     * @param applicationId  调薪申请ID
     * @param approvalStatus 审批状态(1审批通过 2审批拒绝)
     * @param approver       审批人
     * @return 是否成功
     */
    Boolean approveApplication(Long applicationId, String approvalStatus, String approver);

    /**
     * 拒绝调薪申请
     * 
     * @param applicationId   调薪申请ID
     * @param approver        审批人
     * @param approvalOpinion 审批意见
     * @return 是否成功
     */
    Boolean rejectApplication(Long applicationId, String approver, String approvalOpinion);
}